美文网首页my_c++
2018-01-12//1.4.2指针与复制构造函数

2018-01-12//1.4.2指针与复制构造函数

作者: 三笠_149f | 来源:发表于2018-01-13 14:24 被阅读0次

//1.4.2指针与复制构造函数

include<bits/stdc++.h>

using namespace std;
struct Node{
char name;
int age;
Node(char n=" ",int a=0){
name=strdup(n);//strdup函数。将字符串写入内存,并返回一个指针
age=a;
}
/
Node(const Node& n){
name =strdup(n.name);
age=n.age;
}//复制构造函数,声明node2(node1)生成了rose的副本,node2.name指向这个副本之后,
//两个对象的数据成员赋值不会影响另一个的数据成员,即以下输出是18 rose 60 wendy
/
/
Node& operator=(const Node&n){//operator,可用于操作符重载和操作隐式转换
if(this !=&n){//对象可通过this来访问自己的地址,所以
this就是对象本身
if(name!=0)
free(name);
name=strdup(n.name);
age=n.age;
}
return *this;
}//如果是用node2=node1来复制,不重新加载运算符也会出现同样的问题
*/
};
Node node1("rose",18),node2(node1);//or node2=node1;创建对象node1并对node1中的两个数据成员赋值,
//然后创建对象node2,根据node1中的值初始化node2中的数据成员
int main(){
strcpy(node2.name,"wendy");
node2.age=60;
cout<<node1.age<<" "<<node1.name<<" ";//输出18 wendy
cout<<node2.age<<" "<<node2.name<<endl;//输出60 wendy
//因为name是指针,node1和node2的name都指向同一个地址,所以node1.name也会变成wendy。
}

相关文章

  • 2018-01-12//1.4.2指针与复制构造函数

    //1.4.2指针与复制构造函数 include using namespace s...

  • C++面向对象编程 第二周笔记 GeekBand

    本周学习了带指针类的写法 带指针类中的三个特殊函数 1.拷贝构造函数:又称复制构造函数,是一种特殊的构造函数,它由...

  • C++默认拷贝构造函数是浅拷贝

    1 引言 在C++中,会默认生成一个复制(拷贝)构造函数, 当类中出现指针时, 复制会执行浅拷贝, 即只复制指针的...

  • 构造函数涉及到的一些问题

    构造函数不同形式 默认的构造函数' 构造函数初始化列表; 拷贝构造函数; 复制运算符,如果类不允许复制,把拷贝构造...

  • 第二周、如何定义一个类

    1、类分为带指针的类和不带指针的类 不带指针类的写法: 带指针类的写法: 2、构造函数、析构函数 3、拷贝构造函数...

  • 2020-12-16

    1、构造函数或者虚构函数调用虚函数肯定可以正常调用,但是没有多态特性,构造函数最早构造虚表指针,而且如果基类指针2...

  • 16/1

    1.string的7种构造函数 构造函数参数可以是:无、const string指针、constchar指针、ch...

  • 18/3

    1.特殊成员函数(6个):默认构造函数、复制构造函数、复制赋值运算符和析构函数、移动构造函数、移动赋值运算符 这些...

  • C++语法系列之4

    1 复制构造函数的问题 如果没有显示的编写复制构造函数或者赋值运算符,编译器会自动生成默认的复制构造函数和赋值运算...

  • javascirpt复习

    实例中访问构造函数原型的指针,指向的是构造函数原型,不是构造函数; 所以重写构造函数原型对象,【实例对象】访问还是...

网友评论

    本文标题:2018-01-12//1.4.2指针与复制构造函数

    本文链接:https://www.haomeiwen.com/subject/kfycoxtx.html