c++ 运算符重载问题求大神

这里重载运算符了三个
class point
{
private:
int x,int y;
public:
point &operator =(point &p); //这里有问题
point operator +(point &p);
point operator +=(point &P);

第一个重载为什么有&,具体是为什么,什么意思

3个回答

第一个重载是重载了赋值运算操作符,返回类型加了&代表引用,这样的话返回值又可以作为左值,从而实现连续赋值,形如a = b = c;
如果没有加&,则只能作为右值,右值是不能对其进行赋值的,因此无法进行连续赋值

bloom_sssy
carina_ssy 谢谢大神!
3 年多之前 回复

两种重载方式的比较:
一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。
以下一些双目运算符不能重载为类的友元函数:=、()、[]、->。
类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。 C++提供4个类型转换函数:reinterpret_cast(在编译期间实现转换)、const_cast(在编译期间实现转换)、stactic_cast(在编译期间实现转换)、dynamic_cast(在运行期间实现转换,并可以返回转换成功与否的标志)。
若一个运算符的操作需要修改对象的状态,选择重载为成员函数较好。
若运算符所需的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能选用友元函数。
当运算符函数是一个成员函数时,最左边的操作数(或者只有最左边的操作数)必须是运算符类的一个类对象(或者是对该类对象的引用)。如果左边的操作数必须是一个不同类的对象,或者是一个内部 类型的对象,该运算符函数必须作为一个友元函数来实现。
当需要重载运算符具有可交换性时,选择重载为友元函数。
注意事项:
除了类属关系运算符”.“、成员指针运算符”.*“、作用域运算符”::“、sizeof运算符和三目运算符”?:“以外,C++中的所有运算符都可以重载。
重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。
运算符重载实质上是函数重载,因此编译程序对运算符重载的选择,遵循函数重载的选择原则。
重载之后的运算符不能改变运算符的优先级和结合性,也不能改变运算符操作数的个数及语法结构。
运算符重载不能改变该运算符用于内部类型对象的含义。它只能和用户自定义类型的对象一起使用,或者用于用户自定义类型的对象和内部类型的对象混合使用时。
运算符重载是针对新类型数据的实际需要对原有运算符进行的适当的改造,重载的功能应当与原有功能相类似,避免没有目的地使用重载运算符。

y786168557
nuaaysh 我表示很无语啊
3 年多之前 回复

为什么一定要返回一个引用呢?没搞懂啊,c++太渣了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++ 运算符重载问题求大神
这里重载运算符了三个 class point { private: int x,int y; public: point &operator =(point &p); //这里有问题 point operator +(point &p); point operator +=(point &P); } 第一个重载为什么有&,具体是为什么,什么意思
c++刚学 运算符重载 求大神帮忙指点 感激不尽
#ifndef DECIMAL_H #define DECIMAL_H #include <iostream> using std::ostream; using std::istream; class Decimal { public: friend istream &operator>>( istream &, Decimal & ); friend ostream &operator<<(ostream &, const Decimal & ); Decimal( double = 0.0 ); void setInteger( double ); void setDecimal( double ); Decimal &operator=( const Decimal ); const Decimal operator+( const Decimal ); Decimal &operator+=( Decimal ); Decimal operator++(); //Decimal &operator++( double ); Decimal &operator++( int ); bool operator==( const Decimal ); bool operator!=( const Decimal&right ) { return ! (*this==right); } private: // friend ostream &operator<<( const Decimal & ); double integer; double decimal; }; #endif #include <iostream> using std::cout; using std::cin; #include <cmath> #include "decimal.h" Decimal::Decimal( double num ) { decimal = modf( num, &integer ); } ostream & operator<<( ostream & output,const Decimal & d ) { double dec = 0; dec = floor( d.decimal * 100 ); if ( dec < 0 ) dec = 0 - dec; if ( d.decimal != 0 ) { output << floor( d.integer ) << "."; if ( dec > 10 ) output << dec; else output << "0" << dec; } else output << d.integer; return output; } istream& operator>>( istream & input, Decimal & d ) { double num; cout << "Enter a number: "; input >> num; d.decimal = modf( num, &d.integer ); return input; } Decimal &Decimal::operator=( const Decimal d ) { integer = d.integer; decimal = d.decimal; return *this; } void Decimal::setDecimal( double d ) { decimal = d; } void Decimal::setInteger( double i ) { integer = i; } const Decimal Decimal::operator+(const Decimal d ) { Decimal result; result.setDecimal( decimal + d.decimal ); result.setInteger( integer + d.integer ); if ( result.decimal >= 1 ) { result.decimal = result.decimal - 1.0; result.integer++; } else if ( result.decimal <= -1 ) { result.decimal = result.decimal + 1.0; result.integer--; } return result; } Decimal& Decimal::operator+=( Decimal d ) { *this += d; return *this; } Decimal Decimal::operator++() { integer++; return *this; } Decimal &Decimal::operator ++(int ) { Decimal temp = *this; integer++; return *this; } bool Decimal::operator==( const Decimal d ) { return ( integer == d.integer && decimal == d.decimal ); } #include <iostream> using std::cout; using std::endl; using std::cin; #include "decimal.h" int main() { Decimal test1, test2, test3( 1.234 ); cout << "Initial values:\n"; cout << test1 << endl << test2 << endl << test3 << endl << endl; cin >> test1 >> test2; cout << "The sum of test1 and test2 is: " << test1 + test2 << endl; test3 += ++test2; cout << "\nfinal values:\n" << "test1 = " << test1 << endl << "test2 = " << test2 << endl << "test3 = " << test3 << endl; if ( test1 != test3) cout << "test1 and test3 are not equal to each other\n"; return 0; }
C++ 运算符重载问题,求大神们帮忙,一直找不到解决办法
#include <iostream> #include <iomanip> using namespace std; template<class T> class TripleList; template<class T> class Triple { private: int row,col; T val; public: friend class TripleList<T>; friend istream& operator >> (istream& i,TripleList<T> &M); friend ostream& operator << (ostream& o,TripleList<T> &M); Triple(){} Triple(int r, int c, T v):row(r),col(c),val(v){} }; template<class T> class TripleList { private: Triple<T> *data; int rows,cols,nums;//nums表示非零元素的个数 int maxSize; public: TripleList(int size=40); ~TripleList(){delete[] data;} bool Find(Triple<T> value); bool Insert(Triple<T> value); friend istream& operator >> (istream& i, TripleList<T> &M); friend ostream& operator << (ostream& o,TripleList<T> &M); bool Add(TripleList<T> &M, TripleList<T> &result); bool Multiply(TripleList<T> &M, TripleList<T> &result); void Transpose(TripleList<T> &M);//矩阵转置 void FastTranspose(TripleList<T> &M); }; template<class T> TripleList<T>::TripleList(int size) { nums=0; maxSize=size; data=new Triple<T>[maxSize]; } template<class T> bool TripleList<T>::Insert( Triple<T> val)//const { if(nums<=maxSize) { cout<<"fulled!"<<endl; return false; } if(val.row>rows || val.col>cols || val.row<0 || val.row<0) { cout<<"行标或列标越界!"<<endl; return false; } data[nums++]=val; return true; } template<class T> bool TripleList<T>::Find(Triple<T> value) { for(int i=0;i<nums;i++) { if(data[i]==value) { cout<<"OK"<<endl; return true; } } cout<<"can not find!"<<endl; return false; } template<class T> istream& operator >> (istream &i, TripleList<T> &M) { int j=0; cout<<"输入矩阵的行数 "; i>>M.rows; cout<<"输入矩阵的列数 "; i>>M.cols; cout<<"输入矩阵的非零元素的个数 "; i>>M.nums; cout<<"输入"<<M.nums<<"个元素的三元组数据值:(行标从零开始)"<<endl; while(i<M.nums) { i>>M.data[j].row>>M.data[j].col>>M.data[j].val; if(M.data[j].row>=M.rows || M.data[j].col>=M.cols || M.data[j].row<0 || M.data[j].col<0) { cout<<" 行标或列标越界,请重新输入 "<<endl; continue; } j++; } return i; } template<class T> ostream& operator << (ostream &o, TripleList<T> &M) { o<<"这是一个"<<M.rows<<"X"<<M.cols<<" 的稀疏矩阵,它共有"<<M.nums<<"个非零元素!"<<endl; o<<setw(10)<<"行数"<<setw(10)<<"列数"<<setw(10)<<"值"<<endl; for(int i=0;i<M.nums;i++) { o<<M.data[i].row<<setw(10)<<M.data[i].col<<setw(10)<<M.data[i].val<<endl; } return o; } template<class T> void TripleList<T>::Transpose(TripleList<T> &M)//矩阵的转置 { if(!nums){return;} M.data=new Triple<T>[nums]; M.rows=cols,M.cols=rows; for(int i=0;i<nums;i++) { M.data[i].row=data[i].col; M.data[i].col=data[i].row; M.data[i].val=data[i].val; } } int main() { TripleList<int> T,Arr; cin>>T; cout<<T; T.Transpose(Arr); cout<<Arr; return 0; } ``` ``` Undefined symbols for architecture x86_64: "operator<<(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, TripleList<int>&)", referenced from: _main in main.o "operator>>(std::__1::basic_istream<char, std::__1::char_traits<char> >&, TripleList<int>&)", referenced from: _main in main.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
关于c++运算符重载总是有错误
在visual studio 2010 上 重载运算符<<输出复数 代码如下 #include<iostream> using namespace std; class Complex { public: Complex(){real=0;imag=0;} Complex(double r,double i){real=r;imag=i;} Complex operator +(Complex &c2); friend ostream& operator<<(ostream&os,Complex&); private: double real; double imag; } ostream &operator<<(ostream &output,Complex&c) { output<<c.real<<c.imag<<endl; return output; } Complex Complex::operator+(Complex &c2) { return Complex(real+c2.real,imag+c2.imag); } int main() { Complex c1(2,4),c2(2,5),c3; c3=c1+c2; cout<<c3; return 0; } 这个代码是我照书上敲下来的 ,但是怎么运行都有错误 求大神帮忙
C++运算符重载还有类的默认构造函数的问题
定义了一个类叫Integer,只有一个私有成员value,然后要实现前置后置自加还有插入运算符重载。 前置自加内容是 Integer i; value ++; I.setValue(value); return i; 这里我也想直接写成return Integer(value++);可是编译不通过。 然后插入运算符重载是 output <<value ; return output;这两部分功能单独实现没有问题,但是放到一起用就不行了cout<<++i<<endl;想问大神怎么改。还有就是怎么实现Integer i=20;i+=20;
一个关于c++构造函数和运算符重载的问题
代码如下,具体情况是,我定义了一个有形参的构造函数和+号运算符重载,我觉得两个是独立的,但是在调用+号运算符重载时发现同时又调用了这个构造函数,因为我在函数里写了输出语句,所以被调用时我能看到,c++小白想请问各位大神是为什么?是运算符重载函数写的有问题吗?多谢各位~~ //constructeur 2 BigInt::BigInt(int n):numDigits(0) { cout << "constructeur 2 bien appelé" << endl; int quotient = n; int residu; cout << "l'entier que vous donnez est "; for(int i=0;i<3000;i++) { numDigits++; residu = quotient%10; quotient = quotient/10; vals[i] = residu; if(residu == 0 && quotient == 0) { break; } cout << (int)vals[i] << " "; } cout << endl; cout << "l'entier contient " << numDigits-1 << " chiffres" << endl; } //surcharge de l'operateur+ BigInt BigInt::operator+(const BigInt& a) { cout << "surchargé de l'operateur+" << endl; int temp[3000]; int r = 0; for(int i=0;i<numDigits;i++) { temp[i] = vals[i] + a.vals[i] + r; if(temp[i]>9) { r = 1; temp[i] -= 10; } else{r = 0;} cout << temp[i] << " "; } cout << endl; return temp[numDigits]; }
c++运算符重载和模板,求大神指教
``` #include<iostream> using namespace std; /* API: (1)push (2)pop (3)isEmpty (4)Length */ //////////////////////////////////////////////////////////////////////// /* 顺序结构实现栈 */ /* 顺序实现的栈的结构 */ #define MAXSIZE 1000 template <class T> class Stack_array{ private: T data[MAXSIZE]; int top; public: Stack_array(){ top = -1; } //是否为空 bool isEmpty(){ if (top == -1) return true; return false; } //插入一个数据 bool push(T item){ if (top > MAXSIZE - 1) { cout << "Overflow the size of the stack" << endl; return false; } ++top; data[top] = item; return true; } //删除一个元素 bool pop(T & item){ if (top == -1){ cout << "The stack is Empty" << endl; return false; } item=data[top]; --top; return true; } //得打栈的长度 int Length(){ return top + 1; } void print(){ for (int i = 0; i <= top; i++) { cout << data[i] << " "; } cout << endl; } friend ostream &operator <<(ostream &, const Stack_array<T>); }; template <class T> ostream & operator <<(ostream & out, const Stack_array<T> & a){ for (int i = 0; i <= a.top; i++) { out << a.data[i] << " "; } out << endl; return out; } void main(){ Stack_array<int> s; s.push(1); s.push(2); int item = 0; s.pop(item); cout << item << endl; cout << s << endl; s.print(); system("pause"); } ``` ![图片说明](https://img-ask.csdn.net/upload/201612/31/1483195276_738019.png)
求大神。内容:C++程序设计:运算符重载
![图片说明](https://img-ask.csdn.net/upload/201905/09/1557394505_482810.png) 以下是老师上课给的例子,将其按图片要求改动即可 ``` #include<iostream.h> //using namespace std; class Tpoint{ private:int x,y; public: /*Tpoint(){ x=1; y=1; cout<<"default constructor"<<endl; }*/ Tpoint(int a=0,int b=0){ x=a;y=b; cout<<"constructor,x="<<x<<"y="<<y<<endl; } Tpoint(const Tpoint&c ) { x = c.x; y = c.y; cout<<"copy constructor,x="<<x<<"y="<<y<<endl; } ~Tpoint(){ cout<<"delete,x="<<x<<"y="<<y<<endl; } Tpoint operator+(const Tpoint& p){ Tpoint temp; temp.x=x+p.x; temp.y=y+p.y; return temp; } Tpoint operator++(int){ Tpoint before(x,y); x++; y++; return before; } Tpoint operator++(){ x++; y++; return *this; } bool operator==(const Tpoint& p){ if((x==p.x)&&(y==p.y)) return 1; else return 0; } friend Tpoint operator-(Tpoint &p,Tpoint &q); friend Tpoint operator--(Tpoint &p); friend Tpoint operator--(Tpoint &p,int); friend ostream& operator<<(ostream &out,Tpoint &p); friend istream operator>>(istream &in,Tpoint &p); }; Tpoint operator-(Tpoint &p,Tpoint &q) { Tpoint temp; temp.x=p.x-q.x; temp.y=p.y-q.y; return temp; } Tpoint operator--(Tpoint &p) { p.x--; p.y--; return p; } Tpoint operator--(Tpoint &p,int) { Tpoint before(p.x,p.y); p.x--; p.y--; return before; } ostream& operator<<(ostream &out,Tpoint &p) { out<<"("<<p.x<<","<<p.y<<")"<<endl; return out; } void main(){ Tpoint p1(1,1),p2(3); Tpoint p3=p1+p2; cout<<(p1==p2)<<endl; cout<<p1<<endl; ++p1; --p1; Tpoint p4=p1-p2; } ```
线性表的合并,运算符重载有问题,求各位大神解答
#include<iostream> #include<string> using namespace std; #define max 10010; template<class type> class list; template<class type> class list { private: type *data; int size; public: list() { data = new type[max]; size = 0; } ~list() { delete[] data; } /*list(const list<type> &other) { size = other.size; data = new type[max]; for (int i = 0; i < size; i++) data[i] = other.data[i]; }*/ friend list &operator+(const list<type>& x, const list<type>& y) { list<type> tmp; for (int i = 0; i < x.length(); i++) tmp.push_pack(x.visit(i)); for (int i = x.length(); i < x.length() + y.length(); i++) tmp.push_pack(y.visit(i - x.length())); return tmp; } int length() { return size; } void insert(int i, const type &x); void push_pack(const type &x); type visit(int i); }; template<class type> void list<type>::insert(int i, const type &x) { if (i<0 || i>size) return false; for (int j = size; j > i; j--) data[j] = data[j - 1]; data[i] = x; ++size; } template<class type> void list<type>::push_pack(const type &x) { data[size] = x; ++size; } template<class type> type list<type>::visit(int i) { if (i<0 || i>size) return false; return data[i]; } char str[10]; int n, m; int main() { while (cin>>str) { cin >> n >> m; if (str == "int") { list<int> l1; list<int> l2; int a, b; for (int i = 0; i < n; i++) { cin >> a; l1.push_pack(a); } for (int i = 0; i < m; i++) { cin >> b; l2.push_pack(b); } list<int> l3; l3 = l1 + l2; for (int i = 0; i < l3.length(); i++) cout << l3.visit(i) << ' '; } else if (str == "char") { list<char> l1; list<char> l2; char a, b; for (int i = 0; i < n; i++) { cin >> a; l1.push_pack(a); } for (int i = 0; i < m; i++) { cin >> b; l2.push_pack(b); } list<char> l3; l3 = l1 + l2; for (int i = 0; i < l3.length(); i++) cout << l3.visit(i) << ' '; } else if (str == "double") { list<double> l1; list<double> l2; double a, b; for (int i = 0; i < n; i++) { cin >> a; l1.push_pack(a); } for (int i = 0; i < m; i++) { cin >> b; l2.push_pack(b); } list<double> l3; l3 = l1 + l2; for (int i = 0; i < l3.length(); i++) cout << l3.visit(i) << ' '; } } return 0; }
C++关于运算符重载的问题
刚做了一道C++编程题,题目是定义一个字符串类STR,实现字符串的拼接,我的代码如下,但是输出没有达到目的,哪位大神可以解释一下原因? ``` #include <iostream> using namespace std; class STR { private: char s[50]; public: STR(char p[50]) { strcpy(s, p); } void print() { cout << s << endl; } friend STR& operator+=(STR str1, STR str2); }; STR& operator+=(STR str1, STR str2) { return(STR(strcat(str1.s, str2.s))); } int main() { STR s1("Hello "), s2("World!"); s1 += s2; s1.print(); system("pause"); return 0; } ``` ![图片说明](https://img-ask.csdn.net/upload/201906/13/1560403699_92206.jpg)
C++类中包含数组,如何重载运算符,第一次进入,还没有c币,求大神帮忙了,感激不尽
这是头文件 #include<iostream> #ifndef MATRIX_H_ #define MATRIX_H_ class matrix { private: double a[20][20]; int m,n; public: matrix(); matrix(const matrix&a); ~matrix(); matrix operator=(const matrix&a); friend void chengfa(const matrix&a, double b,matrix&c); friend matrix& operator*(const matrix&a,double b); friend matrix& operator*(double b,const matrix&a); friend matrix& operator+(const matrix&a, const matrix&b); friend matrix& operator-(const matrix&a, const matrix&b); friend matrix& operator*(const matrix&a, const matrix&b); friend std::ostream & operator<<(std::ostream&os, matrix&a); friend std::istream & operator>>(std::istream&is, matrix&a); }; #endif 这是对应的函数 #include<iostream> #include"matrix.h" using std::cin; using std::cout; matrix::matrix() { for (int i = 0; i <20; i++) for (int j = 0; j <20; j++) a[i][j] = 0; } matrix::matrix(const matrix&x) { m = x.m; n = x.n; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) a[i][j] = x.a[i][i]; } matrix::~matrix(){} std::istream & operator>>(std::istream &is, matrix&a) { cout << "please input the row of a:\n"; is >> a.m; cout << "please input the lie of a:\n"; is >> a.n; cout << "please input the member of a:\n"; for (int i = 0; i < a.m; i++) for (int j = 0; j < a.n; j++) is >> a.a[i][j]; return is; } std::ostream & operator<<(std::ostream &os, matrix&a) { for (int i = 0; i < a.m; i++) for (int j = 0; j <a.n; j++) { os << a.a[i][j] << " "; if (j == a.n-1) os << "\n"; } return os; } matrix matrix::operator=(const matrix&x) { m = x.m; n = x.n; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) a[i][j] = x.a[i][j]; return*this; } matrix& operator*(const matrix&a,double b) { matrix c; c = a; for (int i = 0; i < c.m; i++) for (int j = 0; j < c.n; j++) c.a[i][j] = c.a[i][j] * b; return c; } matrix& operator*(double b, const matrix&a) { matrix c; c = a; for (int i = 0; i < c.m; i++) for (int j = 0; j < c.n; j++) c.a[i][j] = c.a[i][j] * b; return c; } matrix& operator+(const matrix&a, const matrix&b) { matrix c; c = a; for (int i = 0; i < c.m; i++) for (int j = 0; j < c.n; j++) c.a[i][j] = c.a[i][j]+b.a[i][j]; return c; } matrix& operator-(const matrix&a, const matrix&b) { matrix c; c = a; for (int i = 0; i < c.m; i++) for (int j = 0; j < c.n; j++) c.a[i][j] = c.a[i][j] - b.a[i][j]; return c; } matrix& operator*(const matrix&a, const matrix&b) { matrix c; c = a - a; for (int i = 0; i < c.m; i++) for (int j = 0; j < c.n; j++) for (int k = 0; k < c.n; k++) c.a[i][j] += a.a[i][k] * b.a[k][j]; return c; } 下面是主函数: #include<iostream> #include"matrix.h" void main() { using namespace std; matrix a,b; cout << "请输入a;" << endl; cin >> a; cout << "a是:" << endl; cout << a << endl; b = a*1.5; cout << "b是:" << endl; cout << b << endl; cout << "a*b是:" << endl; cout << a * b<< endl; } 输出如下: 请输入a; please input the row of a: 3 please input the lie of a: 3 please input the member of a: 1 2 3 4 5 6 7 8 9 a是: 1 2 3 4 5 6 7 8 9 b是: 1.5 3 4.5 6 7.5 9 10.5 12 13.5 a*b是: 45 54 63 99 121.5 144 153 189 225 Press any key to continue . . . 可是把重载运算符返回值前面的&去掉,结果就完全错误了 如下: 请输入a; please input the row of a: 3 please input the lie of a: 3 please input the member of a: 1 2 3 4 5 6 7 8 9 a是: 1 2 3 4 5 6 7 8 9 b是: 1.5 1.5 1.5 7.5 7.5 7.5 13.5 13.5 13.5 a*b是: 57 57 57 124.5 124.5 124.5 192 192 192 Press any key to continue . . .
c++重载二维数组运算符,即两个括号
小弟不才,今天上午才明白重载[]的一维用法,但又卡在了二维数组时的重载 我的思路就是 在该类中, class array(int a,int b){*p=new int[a*b];} int & operator [] (int n) {return 这里不知道该怎么搞,这个二维数组当一维数组处理的指针,两次调用的处理方法好像不一样,也无法进行条件判断} private: int **p; 这里就尴尬了,*p是指向指针p的指针,p是指向动态内存首地址的指针。说实话我个人不太理解这种写法,混在一起难理解,又搅不清。这是我网上搜到的思路,个人理解能力有限,希望大神们指点指点。 这里就是想问下,重载二维数组的下标运算符,有什么思路没,初学者能理解的那种…,顺便问下重载圆括号函数调用运算符的思路,圆括号的重载目前完全没思路。如果有大神愿意贴出部分关键源代码,在此再次感谢了
求大神!关于IO 输出运算符重载 这是什么错误 怎么改?
#include"iostream" #include"fstream" #include"string" using namespace std; class coStu { protected: string name,num; double score; public: coStu(string na,string nu,double s): name(na),num(nu),score(s){} friend ostream & operator<<(ostream &out, coStu &obj); }; ostream & operator<<(ostream &out, coStu &obj) { out<<obj.name<<"\t"<<obj.num<<"\t"<<obj.score<<"\t"; return out; } class master:public coStu { private: string teacherName; public: master(string na,string nu,double s,string tn): teacherName(tn),coStu(na,nu,s){} }; void main() { coStu c("张三","134679",89); master m("李四","316497",79,"丁老师"); }
c++ 运算符的重载 运行时出现 debug 请各位大神帮忙找错
// Chapter 8 of C++ How to Program // doubleScriptedArray.h #ifndef DARRAY_H #define DARRAY_H #include <iostream> using std::ostream; using std::istream; class DoubleScriptedArray { friend ostream &operator<<(ostream&, const DoubleScriptedArray & ); /* write declaration for overloaded ostream operator */ friend istream &operator>>( istream &,const DoubleScriptedArray & ); public: DoubleScriptedArray( int = 10, int = 10 ); DoubleScriptedArray( const DoubleScriptedArray & ); ~DoubleScriptedArray(); /* write prototype for overloaded = operator */ const DoubleScriptedArray &operator=( const DoubleScriptedArray &); bool operator==( const DoubleScriptedArray & ) const; DoubleScriptedArray operator!=(DoubleScriptedArray &right)const /* write header for operator != */ { return ! ( *this == right ); } int &operator()( int, int ); int &operator()(int ,int )const;// lvalue /* write prototype for overloaded () operator used as an rvalue */ private: int rows; // number of rows in array int columns; // number of columns in array int *ptr; // pointer to first element of array }; #endif #include <iostream> using std::cout; using std::cin; using std::endl; #include <iomanip> using std::setw; #include <cstdlib> #include <cassert> #include "doubleScriptedArray.h" DoubleScriptedArray::DoubleScriptedArray( int r, int c ) { rows = ( r > 0 ? r : 10 ); columns = ( c > 0 ? c : 10 ); ptr = new int[ rows * columns ]; assert( ptr != 0 ); for ( int i = 0; i < rows * columns; i++ ) ptr[ i ] = 0; } DoubleScriptedArray::DoubleScriptedArray( const DoubleScriptedArray &init ) { rows = init.rows; columns = init.columns; ptr = new int[ rows * columns ]; assert( ptr != 0 ); for ( int i = 0; i < rows * columns; i++ ) ptr[ i ] = init.ptr[ i ]; } /* write definition for destructor */ DoubleScriptedArray::~DoubleScriptedArray() { delete []ptr; } /* write definition for operator = */ const DoubleScriptedArray &DoubleScriptedArray::operator =(const DoubleScriptedArray &init) { rows = init.rows; columns = init.columns; ptr = new int[ rows * columns ]; assert( ptr != 0 ); for ( int i = 0; i < rows * columns; i++ ) ptr[ i ] = init.ptr[ i ]; return *this; } bool DoubleScriptedArray::operator==( const DoubleScriptedArray &right ) const { if ( rows != right.rows ) return false; if ( columns != right.columns ) return false; for ( int i = 0; i < rows * columns; i++ ) if ( ptr[ i ] != right.ptr[ i ] ) return false; return true; } // Overloaded subscript operator for non-const Arrays // reference return creates an lvalue int &DoubleScriptedArray::operator()( int s1, int s2 ) { assert( s1 > 0 && s1 < rows ); assert( s2 > 0 && s2 < columns ); return ptr[ columns * s1 + s2 ]; } // Overloaded subscript operator for const Arrays // const reference return creates an rvalue /* write overloaded subscript operator that returns an rvalue */ int &DoubleScriptedArray::operator()(int s1,int s2 )const { assert( s1 > 0 && s1 < rows ); assert( s2 > 0 && s2 < columns ); return ptr[ columns * s1 + s2 ]; } istream &operator>>( istream &input, const DoubleScriptedArray &a ) { for ( int i = 0; i < a.rows * a.columns; i++ ) input >> a.ptr[ i ]; return input; } /* write function header for overloaded insertion operator */ ostream &operator<<(ostream & output,const DoubleScriptedArray &a ) { for ( int i = 0; i < a.rows * a.columns; i++ ) { output << setw( 6 ) << a.ptr[ i ]; if ( ( i + 1 ) % a.columns == 0 ) output << endl; } if ( i % a.columns != 0 ) output << endl; return output; } // Chapter 8 of C++ How to Program // Driver for class DoubleScriptedArray #include <iostream> using std::cout; using std::cin; using std::endl; #include <ctime> #include<cstdlib> #include<stdlib.h> using namespace std; #include "doubleScriptedArray.h" int main() { // seed rand function srand( time( 0 ) ); // create two arrays with different dimensions DoubleScriptedArray a( 6, 7 ), b( 8, 2 ); cout << "Uninitialized array \"a\" is: \n" << a << "Uninitialized array \"b\" is: \n" << b; // initialize array "a" with random values (0-100) for ( int i = 0; i < 6; i++ ) for ( int j = 0; j < 7; j++ ) a(i,j)=rand()%100; /* write statement to insert random elements (reduced to a range of 0 - 100) into the array via the overloaded () */ // use overloaded operator= b = a; cout << "\nInitialized array \"a\" is now:\n" << a << "Assigning b = a:\n" << b; // check if arrays are equal using overloaded == if ( a == b ) cout << "\"a\" was found to be equal to \"b\"\n"; else cout << "\"a\" was found to be not equal to \"b\"\n"; // retrieve an array element using overloaded operator() cout << "The element (2, 1) of array \"a\" is: " << a( 2, 1 ) << endl; // change an element of the array using overloaded operator() a( 2, 1 ) = -1; cout << "Changed element (2, 1) to -1: \n" << a; // check if arrays are still equal if (a==b /* write condition to check if arrays are equal */ ) cout << "\"a\" was found to be equal to \"b\"\n"; else cout << "\"a\" was found to be NOT equal to \"b\"\n"; return 0; }
运算符重载只能运行加法,减法是两个数反过来减了?求问大神
#include<iostream> using namespace std; class RMB{ int yuan,jiao,fen; public: RMB(int y=0,int j=0,int f=0) { yuan=y;jiao=j;fen=f; if(jiao>=10) //让分,角逢十进一 { jiao=jiao-10;yuan=yuan+1; } if(fen>=10) { fen=fen-10; jiao=jiao+1; } } RMB operator+(RMB b); RMB operator-(RMB b); void display(); }; RMB RMB::operator +(RMB b) { yuan=yuan+b.yuan; jiao=jiao+b.jiao; fen=fen+b.fen; if(fen>=10) { fen=fen-10; jiao=jiao+1; if(jiao>=10) { jiao=jiao-10; yuan=yuan+1; } } return RMB(yuan,jiao,fen); } RMB RMB::operator -(RMB b) { if(fen<b.fen) { if(jiao>0) { fen=fen+10; jiao=jiao-1; } else if(yuan>0) { yuan=yuan-1; jiao=jiao+9; fen=fen+10; } } fen=fen-b.fen; if(jiao<b.jiao) if(yuan>0) { yuan=yuan-1; jiao=jiao+10; } jiao=jiao-b.jiao; yuan=yuan-b.yuan; return RMB(yuan,jiao,fen); } void RMB::display() { // if(yuan>=0) cout<<yuan<<"元"<<jiao<<"角"<<fen<<"分"<<endl; // else cout<<"输入有误!"<<endl; } void main() { RMB c(1,2,1);RMB d(3,3,3); RMB e;RMB f; c.display (); d.display (); e=c+d; e.display (); f=d-c; // RMB c1(1,2,1);RMB d1(5,3,3); // f=d1-c1; f.display (); } 如果把f=d-c注释掉,然后后两行不要注释,得出的结果又是对的?
C++等号运算符‘=’重载问题,显示乱码。
c++中定义两个数组类,重载‘=’运算符,令其按位赋值而非直接地址赋值,调用重载操作符后,显示乱码, 刚开始学习c++,求大神帮忙 class ARRAY{ //数组 类 int N; int *arr; public: ARRAY(); ARRAY(int *b,int m); ~ARRAY(){delete []arr;} void setfirst(int a){ *arr=a;} void show(); ARRAY operator=(ARRAY b); }; ARRAY ARRAY::operator=(ARRAY b){ // 重载 = N=b.N; arr=new int[N]; for(int i=0;i<N;i++) arr[i]=b.arr[i]; return *this; } ARRAY::ARRAY(){ //构造函数 N=10; arr=new int[N]; for(int i=0;i<N;i++){ arr[i]=0; } } ARRAY::ARRAY(int *b,int m){ //构造函数 N=m; arr=new int[N]; for(int i=0;i<N;i++){ arr[i]=b[i];} } void ARRAY::show(){ //显示 for(int i=0;i<N;i++){cout<<arr[i]<<' ';} cout<<endl; } void main(){ int d[10]={1,2,3,4,5,6,7,8,9,10}; int N=9; ARRAY a(d,N); ARRAY b; a.show(); b.show(); b=a; //赋值 ???????? cout<<"*************\n"; a.show(); //显示出错 b.show(); cout<<"*************\n"; a.setfirst(10); a.show(); b.show(); cout<<"*************\n"; while(1); } 重载=后显示如下 ![图片说明](https://img-ask.csdn.net/upload/201810/31/1540975585_86538.png)
c++友元函数重载<<运算符后还是无法访问类私有变量。求大神解答
#ifndef A_H_ #define A_H_ class Stonewt { private: enum { Lbs_per_stn = 14 }; enum Mode { Stone, IntPounds, FloatPounds }; Mode m_mode; int mm_stone; double m_left_pbs; double m_pounds; public: Stonewt(); Stonewt(double weight, Mode mode); ~Stonewt(); friend Stonewt operator +(Stonewt& temp1, Stonewt& temp2); friend ostream& operator <<(ostream& os, Stonewt& temp); }; #endif //以上为头文件 #include<iostream> #include"标头.h" using namespace std; Stonewt::Stonewt() { mm_stone = 0; m_left_pbs = 0; m_pounds = 0; } Stonewt::Stonewt(double weight, Mode mode) { m_mode = mode; if (m_mode == Stone) { mm_stone = weight; m_left_pbs = 0; m_pounds = weight*Lbs_per_stn; } else if (m_mode == IntPounds) { mm_stone = (int)weight / Lbs_per_stn; m_left_pbs = (int)weight%Lbs_per_stn; m_pounds = (int)weight*Lbs_per_stn; } else if (m_mode == FloatPounds) { mm_stone = weight / Lbs_per_stn; m_left_pbs = (int)weight%Lbs_per_stn + weight - int(weight); m_pounds = weight*Lbs_per_stn; } else { cout << "模式错误\n"; mm_stone = 0; m_left_pbs = 0; m_pounds = 0; } } Stonewt::~Stonewt() { } Stonewt operator +(Stonewt& temp1, Stonewt& temp2) { Stonewt temp; temp.mm_stone = temp1.mm_stone + temp2.mm_stone; return temp; } ostream& operator<<(ostream& os, Stonewt& temp) { os << "英石:" << temp.mm_stone << " 磅:" << temp.m_left_pbs << endl << "总英石:" << temp.m_pounds << endl; return os; } //以上为类实现文件 在最后一个operator函数中无法访问 temp.mm_stone;temp.m_left_pbs; temp.m_pounds 。但是把类的定义和类方法写在同一个文件上却不抱错不知道为什么,我用的VA2015![图片说明](https://img-ask.csdn.net/upload/201710/01/1506833609_421846.png)
C++ 操作符重载的内存释放问题
=操作符重载,给复构造函数进行赋值时的代码如下: MyString & MyString::operator =(const MyString &str) { if(this == &str) return *this; delete []m_pData; //**???????????????????????????? ** m_pData = NULL; m_pData = new char(strlen(str.m_pData) + 1); strcpy (m_pData, str.m_pData); return *this; } class MyString { public: .... private: char *m_pData; } 在函数中为什么还要是对原有的内存进行释放,即delete []m_pData,直接赋值 m_pData = str.m_pData, 这样不行吗? 请大神指点。
求大神解答一下c++的题,重载运算符+,-,*,求矩阵的运算,做了好久没做出来
<textarea readonly="readonly" name="code" class="c++"> ``` #include<iostream.h> #include<iomanip.h> class operation {public: static void rank(); //输入阶数 void array(); //输入矩阵 void display(); friend operation operator +(operation &,operation &); friend operation operator -(operation &,operation &); friend operation operator *(operation &,operation &); private: int a[50][50]; static int n; }; void operation::rank() {cin>>n;} void operation::array() { for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; } operation operator +(operation &a1,operation &a2) { operation a3; for(int i=0;i<operation::n;i++) for(int j=0;j<operation::n;j++) a3.a[i][j]=a1.a[i][j]+a2.a[i][j]; return a3; } operation operator -(operation &a1,operation &a2) { operation a3; for(int i=0;i<operation::n;i++) for(int j=0;j<operation::n;j++) a3.a[i][j]=a1.a[i][j]-a2.a[i][j]; return a3; } operation operator *(operation &a1,operation &a2) { operation a3; for(int k=0;k<operation::n;k++) { for(int i=0;i<operation::n;i++) { for(int j=0;j<operation::n;j++) a3.a[k][i]+=a1.a[k][j]*a2.a[j][i]; } } return a3; } void operation::display() { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) cout<<setw(10)<<operation::a[i][j]; cout<<endl; } } int operation::n; #include"operation.h" int main() { operation a1,a2,a3; cout<<"piease input rank:"; operation::rank(); cout<<"please input a1:"<<endl; a1.array(); cout<<"please input a2:"<<endl; a2.array(); cout<<"a1+a2:"<<endl; a3=a1+a2; a3.display(); cout<<"a1-a2:"<<endl; a3=a1-a2; a3.display(); cout<<"a1*a2:"<<endl; a3=a1*a2; a3.display(); return 0; } ``` </textarea>
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
C++(数据结构与算法):62---搜索树(二叉搜索树、索引二叉搜索树)
一、搜索树的复杂度分析 本文考察二叉搜索树和索引二叉搜索树 二叉搜索树的渐进性能可以和跳表媲美: 查找、插入、删除操作所需的平均时间为Θ(logn) 查找、插入、删除操作的最坏情况的时间为Θ(n) 元素按升序输出时所需时间为Θ(n) 虽然在最坏情况下的查找、插入、删除操作,散列表和二叉搜索树的时间性能相同,但是散列表在最好的情况下具有超级性能Θ(1) 不过,对于一个指定的关键...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
立即提问