建構函式與指標
阿新 • • 發佈:2019-02-20
1、如果遇到指標問題的話必須顯示定義預設建構函式、解構函式、賦值運算子函式、拷貝建構函式。
2、以陣列形式出現:
#include <iostream>
#include <cstring>
using namespace std;
class Point
{
private:
int age;
char name[20];//name[20]為指標常量,不能賦值;
public:
Point(int age_,char name_[]):age(age_)
{
strcpy(name,name_);
}
Point(const Point& p):age(p.age)
{
strcpy(name,p.name);
}
void show()
{
cout<<age<<" "<<name<<endl;
}
};
int main()
{
Point s1(30,"zhangsan"),s2(s1);
s1.show();
s2.show();
}
3、以指標形式出現
#include <iostream>
#include <cstring>
using namespace std;
class Point
{
private:
int age;
char *name;//name為指標變數;
public:
Point(int age_,char *name_):age(age_)
{
name=new char[strlen(name_)+1];
strcpy(name,name_);
}
Point(const Point& p):age(p.age)
{
name=new char[strlen(p.name)+1];//這一行前往不要少;
strcpy(name,p.name);
}
~Point(){delete []name;}//必須要釋放函式中動態申請的記憶體;
void show()
{
cout<<age<<" "<<name<<endl;
}
};
int main()
{
Point s1(30,"zhangsan"),s2(s1);
s1.show();
s2.show();
}
3與4的執行結果均為
4、看好兩者之間的區別,注意如何給他們賦值等等。