黑马p121运载符重载加号
/*黑马p120友元friend成员函数*/
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
Person()
{
this->a = 1;
this->b = 2;
}
/*Person operator+(Person& p)
{
Person temp;
temp.a = this->a + p.a;
temp.b = this->b + p.b;
return temp;
}*/
int a;
int b;
};
Person operator+(Person& p1,Person& p2)
{
Person temp;
temp.a = p1.a + p2.a;
temp.b = p1.b + p2.b;
return temp;
}
Person operator+(Person& p1, int a)
{
Person temp;
temp.a = p1.a + a;
temp.b = p1.b + a;
return temp;
}
void test()
{
Person p1, p2, p3,p4;
p3 = p1 + p2;
p4 = p1 + 4;
cout << p3.a << endl << p3.b << endl;
cout << p4.a << endl << p4.b << endl;
}
int main()
{
test();
return 0;
}
黑马p122运载符重载左运算符
/*黑马p122运载符重载左运算符*/
#include<iostream>
#include<string>
using namespace std;
class Person
{
public:
Person()
{
this->a = 1;
this->b = 2;
}
int a;
int b;
};
ostream& operator<<(ostream& out, Person p)
{
out <<"a="<< p.a<<" b="<<p.b<<endl;
return out;
}
void test()
{
Person p;
cout << p << " hello" << endl;
}
int main()
{
test();
return 0;
}
黑马p123运载符重载自加
/*黑马p122运载符重载左运算符*/
#include<iostream>
#include<string>
using namespace std;
class Myint
{
friend ostream& operator<<(ostream& out, Myint i);
public:
Myint()
{
a = 0;
}
Myint& operator++() {
a++;
return *this;
}
Myint operator++(int) {
Myint temp=*this;
a++;
return temp;
}
private:
int a;
};
ostream& operator<<(ostream& out, Myint i)
{
out << i.a;
return out;
}
void test()
{
Myint i;
cout << (i++)++<<i;
}
int main()
{
test();
return 0;
}
/*作者:jennie
* 开始时间:2022年03月24日 13:31:34 星期四
* 结束时间:2022年03月24日 13:41:37 星期四
* 课程名:黑马c++
* 知识单元:运算重载符赋值=
* 属性:例题
* 具体题目要求:
*(默认赋值全部),深浅拷贝
*/
#include<iostream>
using namespace std;
class Person {
int *age;
public:
Person(int a) {
age = new int(a);
}
int getAge() {
return *age;
}
Person& operator=(Person p) {
if (age != NULL) {
delete age;
age = NULL;
}
age = new int(p.getAge());
return *this;
}
};
int main() {
Person p1(18), p2(20);
p2 = p1;
cout << p1.getAge() << p2.getAge();
return 0;
}
/*作者:jennie
* 开始时间:2022年03月24日 15:29:42 星期四
* 结束时间:2022年03月24日 15:39:44 星期四
* 课程名:黑马c++
* 知识单元:运算重载符调用()
* 属性:例题
* 具体题目要求:打印 求和 伪函数 匿名调用
*/
#include<iostream>
using namespace std;
class MyClass {
public:
void operator()(string s) {
cout << s<<endl;
}
int operator()(int a,int b) {
return a + b;
}
};
int main() {
MyClass c;
c("hello");
cout << c(1, 2)<<endl;
MyClass()("world");
cout << MyClass()(4, 5) << endl;
return 0;
}
/*作者:jennie
* 开始时间:2022年03月24日 23:00:42 星期四
* 结束时间:2022年03月24日 23:10:46 星期四
* 课程名:黑马c++
* 知识单元:129 47 继承的对象模型
* 属性:例题
* 具体题目要求:
*字节大小+开发命令提示行
*/
#include<iostream>
using namespace std;
class Base {
public:
int a;
protected:
int b;
private:
int c;
};
class Son:public Base {
public:
int d;
};
int main() {
cout << sizeof(Son);
return 0;
}