有关C++的基本问题
为什么全部是公有成员的类可以直接赋初值,而另一掺有私有成员的类却不可以对公有成员直接赋初值。
#include<iostream.h>
class Point
{
public:
int a, b;
private:
float X, Y;
public:
void SetX(float x)
{
X = x;
}
void SetY(float y)
{
Y = y;
}
float GetX();
float GetY();
};
float Point::GetX()
{
return X;
}
float Point::GetY()
{
return Y;
}
class Address
{
public:
long telenum;
char addr[30];
};
class Person
{
public:
char name[15];
int age;
Address paddr;
void GetPerImfo();
};
void Person::GetPerImfo()
{
cout<<"Name: "<<this->name<<endl;
cout<<"Age: "<<this->age<<endl;
cout<<"TeleNum: "<<this->paddr.telenum<<endl;
cout<<"Address: "<<this->paddr.addr<<endl;
}
int main()
{
Point point = {1, 2};//直接赋值错误。
point.SetX(11);
point.SetY(11);
cout<<"X = "<<point.GetX()<<endl<<"Y = "<<point.GetY()<<endl;
Person person = {"Liang Yuechuan", 21, {2141200, "JISHOU UNIVAERSITY"}};//不出错。
person.GetPerImfo();
return 0;
}
[解决办法]
用正确的方法初始化对象,在C++中,永远考虑用一个构造函数实现
你用这种初始化,编译器怎么知道该怎么去初始化那个private变量?
当作规定去理解,哪有那么多为什么